home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / os2 / fbimon.zip / fbimon.INF (.txt) next >
OS/2 Help File  |  1997-05-22  |  13KB  |  344 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Before you do anything ! ΓòÉΓòÉΓòÉ
  3.  
  4. FBiMon.sys is a FREEWARE driver for OS/2. It means that you can copy it and 
  5. give it to your friends as long as every file are given and no changes are made 
  6. to any file. FBiMon.sys has been developped at first for my needs, but I would 
  7. be very happy if it could help anyone. I make no warranty of any kind about 
  8. FBiMon.sys, and so I am not responsible of any use of it, nor am I responsible 
  9. for any damage it could do. YOU USE IT AT YOUR OWN RISK ! 
  10.  
  11. I strongly recommend that you test it before incorporating it in your system. 
  12. FBiMon.sys has been made to be stable on my system, so I cannot guarantee that 
  13. it will work on yours. To avoid a loss of data, you may boot on floppy and 
  14. tries FBiMon.sys from there. See the "Testing the driver" section. 
  15.  
  16.  
  17. ΓòÉΓòÉΓòÉ 2. Introduction ΓòÉΓòÉΓòÉ
  18.  
  19. About FBiMon.sys 
  20.  
  21. FBiMon.sys is a driver for the Hercule monochrome adapter under OS/2 2.0 and 
  22. higher, for a system with two monitors, with the Hercule monitor as the 
  23. secondary monitor. 
  24.  
  25. The driver shipped with OS/2 does not provide a good access to the secondary 
  26. monitor (imho). First, only one screen is refreshed at a time, and second, you 
  27. have access only to text mode. This is due to the fact that OS/2 does not 
  28. really support an Hercule card but an MDA card. 
  29.  
  30. FBiMon.sys allows you to use both screens at the same time and is able to 
  31. either initiate a text mode or a graphic mode. It is also possible to change 
  32. the cursor aspect, to enable blinking characters and to test a vertical 
  33. scanline. 
  34.  
  35. As time goes, there will be more functions added to FBiMon.sys. 
  36.  
  37. FBiMon.sys is a FREEWARE driver for OS/2. It means that you can copy it and 
  38. give it to your friends as long as every file are given and no changes are made 
  39. to any file. FBiMon.sys has been developped at first for my needs, but I would 
  40. be very happy if it could help anyone. I make no warranty of any kind about 
  41. FBiMon.sys, and so I am not responsible of any use of it, nor am I responsible 
  42. for any damage it could do. YOU USE IT AT YOUR OWN RISK ! 
  43.  
  44. Current version of the driver is version 0.02. It is still in beta stage but is 
  45. fairly stable. There should not be any major bugs (so far I hope !). 
  46.  
  47.  
  48. ΓòÉΓòÉΓòÉ 3. Installation ΓòÉΓòÉΓòÉ
  49.  
  50. How to install FBiMon.sys 
  51.  
  52. To install FBiMon.sys just follow these steps 
  53.  
  54.      Copy the FBIMON package in a directory of your choice 
  55.  
  56.      Add this line at the end of your CONFIG.SYS file : 
  57.  
  58.                           DEVICE = X : \ PATH \ FBIMON . SYS
  59.       Where 
  60.  
  61.         -  X: is the drive where the FBIMON package has been installed 
  62.         -  PATH is the path name where the package is located on the driver 
  63.  
  64.      Reboot your computer to enable the changes 
  65.  
  66.  You should see an FBi logo during OS/2 startup 
  67.  
  68.  
  69. ΓòÉΓòÉΓòÉ 4. The making of ΓòÉΓòÉΓòÉ
  70.  
  71. To bring this driver to you, I had to use these applications : 
  72.  
  73.      EPM, the editor shipped with OS/2, the best editor (imho) ! 
  74.      ALP, an unsupported assembler from IBM, maybe the only assembler running 
  75.       completely under OS/2 
  76.      LINK, shipped with OS/2 
  77.      HeD by Jnk, an excellent hexadecimal editor, the best one (imho) 
  78.      IPFC, to create this INF file 
  79.  
  80.  To create software using the driver, I also had to use these applications : 
  81.  
  82.      TmT Pascal Lite compiler, a really good pascal compiler for OS/2 and DOS 
  83.      EMX GCC, the GNU C/C++ compiler for OS/2 (used to create a Rexx dll) 
  84.  
  85.  This driver has been entirely written in assembly langage (16 bit) 
  86.  
  87.  
  88. ΓòÉΓòÉΓòÉ 5. Testing the driver ΓòÉΓòÉΓòÉ
  89.  
  90. How to test FBiMon.sys 
  91.  
  92. The way FBiMon.sys has been concieved allows you to test it with simple 
  93. commands. FBiMon.sys is packaged with some *.BIN files. These files contain 
  94. commands for the FBiMon.sys driver. To send them to the driver, just type : 
  95.  
  96.                           COPY  XXXXXXX . BIN  FBIMON $
  97. where XXXXXXX.BIN is one of the following files : 
  98.  
  99.  FileName            Contents 
  100.  HrcTxt.bin          Initializes the text mode 
  101.  HrcGfx.bin          Initializes the graphic mode 
  102.  HrcTest.bin         Initializes the graphic mode and draws a point in each 
  103.                      corner of the screen 
  104.  These are very short files, but they are enough to fulfill their function 
  105.  
  106.  
  107. ΓòÉΓòÉΓòÉ 6. In case of troubles ΓòÉΓòÉΓòÉ
  108.  
  109. What to do if you have troubles with FBiMon.sys 
  110.  
  111. There are two kind of bugs : 
  112.  
  113.      The first one is my favorite... but will not be yours !!! It happens when 
  114.       you can read the infamous screen telling you the system has crashed and 
  115.       showing lots of information about registers. It is my favorite since this 
  116.       kind of bugs can be quickly eliminated due to the help of information. I 
  117.       sincerely apologize if this happens to you. By the way, it would be very 
  118.       kind to send me the entire screen. If it can reassure you, I do not count 
  119.       this kind of crash anymore. 
  120.      The second one is more... annoying for me, but you should enjoy it much 
  121.       more than the previous bug ! For some reasons, an application using the 
  122.       driver could crash or the driver would not work as stated in this 
  123.       documentation. If this happens to you, please tell me in which situation 
  124.       the more precisely you can, and I will try to fix it. 
  125.  
  126.  
  127. ΓòÉΓòÉΓòÉ 7. Developper's side ΓòÉΓòÉΓòÉ
  128.  
  129. This section is reserved to people who wants to use the FBiMon driver for 
  130. development 
  131.  
  132.  
  133. ΓòÉΓòÉΓòÉ 7.1. Driver function's OpCodes ΓòÉΓòÉΓòÉ
  134.  
  135. I have followed some conventions when writing this section. First, Every number 
  136. starting with '0x' is written in hexadecimal notation. Next, I used a graphic 
  137. representation of bytes sequences needed to execute the functions like this one 
  138.  
  139.                          Γöî ΓöÇΓöÇ Γö¼ ΓöÇΓöÇ Γö¼ ΓöÇΓöÇ Γö¼ ΓöÇΓöÇ Γö¼ ΓöÇΓöÇ Γö¼ ΓöÇΓöÇ ΓöÉ
  140.                          Γöé XX Γöé YY Γöé ZZ Γöé TT Γöé UU Γöé VV Γöé
  141.                          Γöö ΓöÇΓöÇ Γö┤ ΓöÇΓöÇ Γö┤ ΓöÇΓöÇ Γö┤ ΓöÇΓöÇ Γö┤ ΓöÇΓöÇ Γö┤ ΓöÇΓöÇ Γöÿ
  142.  
  143. every 'XX', 'YY'... is explained just below this array. The first two bytes are 
  144. always the command OpCode. Bytes are written according to the sequence used by 
  145. Intel microprocessors. One cell is always one byte. 
  146.  
  147. There are only up to 16 reserved function opcode, some are already implemented, 
  148. some are not. I plan to make this list growing up. 
  149.  
  150.  OpCodes        Meaning 
  151.  0x0001         Set Text/Graphics mode 
  152.  0x0002         Set default text attributes 
  153.  0x0003         Set active/inactive blinking 
  154.  0x0004         Set text cursor aspect 
  155.  0x0005         Scroll the screen in all directions (not yet implemented) 
  156.  0x0006         Set Start Address of video memory (not yet implemented) 
  157.  0x0007         Print text with default attributes 
  158.  0x0008         Print text with given attributes (not yet implemented) 
  159.  0x0009         Set text cursor position 
  160.  0x000A         Draw a pixel 
  161.  0x000B         Draw a line (not yet implemented) 
  162.  0x000C         Draw a horizontal line 
  163.  0x000D         Draw a vertical line 
  164.  0x000E         Draw a rectangle (not yet implemented) 
  165.  0x000F         Fill a rectangle zone (not yet implemented) 
  166.  0x0010         Invert a rectangle zone (not yet implemented) 
  167.  
  168.  
  169. ΓòÉΓòÉΓòÉ 7.1.1. Set Text/Graphics mode ΓòÉΓòÉΓòÉ
  170.  
  171. This OpCode takes only one parameter 
  172.  
  173. ΓöîΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÉ
  174. Γöé01Γöé00ΓöéXXΓöé
  175. ΓööΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÿ
  176. XX values : 
  177.  
  178.  Value     Meaning 
  179.  0x00      Set Text mode 
  180.  0x01      Set Graphic mode 
  181.  
  182.  This function initializes the Hercules Graphic Card to the desired mode, 
  183.  clears the screen and resets text attributes to default. 
  184.  
  185.  Mode                Technical info 
  186.  Text                80 columns for 25 rows, text only with attributes like 
  187.                      blink, underline, high or low intensity, character matrix 
  188.                      is 9x14. 
  189.  Graphic             720 columns for 348 rows, graphic only, only black and 
  190.                      white colors are available. 
  191.  
  192.  
  193. ΓòÉΓòÉΓòÉ 7.1.2. Set default text attributes ΓòÉΓòÉΓòÉ
  194.  
  195. This OpCode takes only one parameter 
  196.  
  197. ΓöîΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÉ
  198. Γöé02Γöé00ΓöéXXΓöé
  199. ΓööΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÿ
  200. XX values are explained in this table 
  201.  
  202. This function sets the text attributes used in text mode when printing a 
  203. string. It is meaningless when using graphic mode. 
  204.  
  205.  
  206. ΓòÉΓòÉΓòÉ 7.1.3. Set active/inactive blinking ΓòÉΓòÉΓòÉ
  207.  
  208. This OpCode takes only one parameter 
  209.  
  210. ΓöîΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÉ
  211. Γöé03Γöé00ΓöéXXΓöé
  212. ΓööΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÿ
  213. XX values : 
  214.  
  215.  Value     Meaning 
  216.  0x00      Disable blink attribute 
  217.  0x01      Enable blink attribute 
  218.  
  219.  This function allows you to control the effect of the attribute bit "blink". 
  220.  It is meaningless when using graphic mode. 
  221.  
  222.  
  223. ΓòÉΓòÉΓòÉ 7.1.4. Set text cursor aspect ΓòÉΓòÉΓòÉ
  224.  
  225. ΓöîΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÉ
  226. Γöé04Γöé00ΓöéFFΓöéLLΓöéXXΓöé
  227. ΓööΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÿ
  228. FF and LL value range is 0x00..0x1F (0..31). FF is the first scanline, and LL 
  229. is the last scanline. 
  230.  
  231. XX values : 
  232.  
  233.  Value     Meaning 
  234.  0x00      No blinking (for the cursor, not for the text) 
  235.  0x01      Cursor is not displayed 
  236.  0x02      Blinking with 16*refresh rate (for the cursor, not for the text) 
  237.  0x03      Blinking with 32*refresh rate (for the cursor, not for the text) 
  238.  
  239.  This function allows you to set the size and shape of the hardware text 
  240.  cursor. 
  241.  
  242.  Though values up to 0x1F (31) are allowed for FF and LL (the hardware supports 
  243.  it), it is meaningless to use values higher than 0x0F (15). It is meaningless 
  244.  when using graphic mode. 
  245.  
  246.  
  247. ΓòÉΓòÉΓòÉ 7.1.5. Print text with default attributes ΓòÉΓòÉΓòÉ
  248.  
  249. ΓöîΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÉ
  250. Γöé07Γöé00ΓöéL1ΓöéL0Γöé**Γöé**Γöé**Γöé**Γöé...Γöé
  251. ΓööΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÿ
  252.  
  253. L0L1 is a word containing the length of the **** string. 
  254.  
  255. This function prints the **** string on screen in text mode at the current 
  256. screen position (see Set text cursor position) and with the current text 
  257. attributes (see Set default text attributes). It is meaningless when using 
  258. graphic mode. 
  259.  
  260.  
  261. ΓòÉΓòÉΓòÉ 7.1.6. Set text cursor position ΓòÉΓòÉΓòÉ
  262.  
  263. ΓöîΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÉ
  264. Γöé09Γöé00ΓöéX1ΓöéX0ΓöéY1ΓöéY0Γöé
  265. ΓööΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÿ
  266.  
  267. X0X1 and Y0Y1 are the two words defining the new desired position for the text 
  268. cursor. X0X1 is the column index (range=0..79), and Y0Y1 is the row index 
  269. (range=0..24). 
  270.  
  271. This function defines the current text position where will begin to display 
  272. next string, and also defines the position of the hardware text cursor on the 
  273. screen. 
  274.  
  275.  
  276. ΓòÉΓòÉΓòÉ 7.1.7. Draw a pixel ΓòÉΓòÉΓòÉ
  277.  
  278. ΓöîΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÉ
  279. Γöé0AΓöé00ΓöéX1ΓöéX0ΓöéY1ΓöéY0ΓöéCCΓöé
  280. ΓööΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÿ
  281.  
  282. X0X1 and Y0Y1 are the two words defining the desired position for the pixel to 
  283. be drawn. X0X1 is the column index (range=0..719), and Y0Y1 is the row index 
  284. (range=0..347). 
  285.  
  286. CC values : 
  287.  
  288.  Value     Meaning 
  289.  0x00      Clear pixel 
  290.  0x01      Draw Pixel 
  291.  0x02      Invert pixel (not yet implemented) 
  292.  
  293.  This function is meaningless for text mode. 
  294.  
  295.  
  296. ΓòÉΓòÉΓòÉ 7.1.8. Draw a horizontal line ΓòÉΓòÉΓòÉ
  297.  
  298. ΓöîΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÉ
  299. Γöé0CΓöé00ΓöéW1ΓöéW0ΓöéX1ΓöéX0ΓöéY1ΓöéY0ΓöéCCΓöé
  300. ΓööΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÿ
  301.  
  302. This function draws a horizontal line from (W0W1,Y0Y1) to (X0X1,Y0Y1) using 
  303. color CC. W0W1, X0X1 range is 0..719 and Y0Y1 range is 0..347. 
  304.  
  305. CC values : 
  306.  
  307.  Value     Meaning 
  308.  0x00      Clear pixel 
  309.  0x01      Draw Pixel 
  310.  0x02      Invert pixel (not yet implemented) 
  311.  
  312.  This function is meaningless for text mode. 
  313.  
  314.  
  315. ΓòÉΓòÉΓòÉ 7.1.9. Draw a vertical line ΓòÉΓòÉΓòÉ
  316.  
  317. ΓöîΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÉ
  318. Γöé0DΓöé00ΓöéX1ΓöéX0ΓöéY1ΓöéY0ΓöéZ1ΓöéZ0ΓöéCCΓöé
  319. ΓööΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÿ
  320.  
  321. This function draws a vertical line from (X0X1,Y0Y1) to (X0X1,Z0Z1) using color 
  322. CC. W0W1, X0X1 range is 0..719 and Y0Y1 range is 0..347. 
  323.  
  324. CC values : 
  325.  
  326.  Value     Meaning 
  327.  0x00      Clear pixel 
  328.  0x01      Draw Pixel 
  329.  0x02      Invert pixel (not yet implemented) 
  330.  
  331.  This function is meaningless for text mode. 
  332.  
  333.  
  334. ΓòÉΓòÉΓòÉ 7.2. Text Attributes ΓòÉΓòÉΓòÉ
  335.  
  336.  Attribute Meaning 
  337.  0x00      Show nothing (character is not drawn) 
  338.  0x01      Underline character 
  339.  0x07      Low intensity 
  340.  0x70      Invert background and foreground color 
  341.  0x08      High intensity 
  342.  0x80      Make the character blink 
  343.